Firmware is the computer code or software that is stored in an electronic device to control the operation of that device. Many electronic devices operate using a piece of firmware, e.g., include wireless phones, set-top boxes, digital music players, etc. The device on which the firmware is stored and executed is frequently referred to as the host or the host device.
The firmware is typically stored in a non-volatile memory unit of the host device, for example, a flash memory unit. A non-volatile memory unit retains data even when power to the memory unit is discontinued. Consequently, the firmware is maintained while the host device is deactivated and is available when the host is activated.
When the host device is started, the firmware is typically loaded into volatile memory, e.g., Random Access Memory (RAM), and executed by the processor of the host device. The processor's execution of the firmware causes the device to operate and provide the function or functions for which the host device was intended. In addition to providing the device's functionality, the firmware may also include a user interface allowing the user to control the functioning of the host device.
Host devices also typically store a boot module or boot algorithm in non-volatile memory. This boot module is essential for starting the host device. When the host device is started, the boot module provides the processor with the initial instructions that operate the host device until the host's firmware is loaded and executed and takes over control of the host device.
A key function of the boot module is to locate the firmware in non-volatile memory. The firmware is then retrieved or read out of the non-volatile memory for execution by the processor. Thus, the boot module must have some means of locating the firmware image in the non-volatile memory unit.
In the past, this locating function has entailed configuring the boot module to expect a particular architecture in the non-volatile memory unit. However, if the non-volatile memory unit is ever replaced with a unit having a different architecture, the conventional boot module has no way of locating the firmware image to use at startup.
Firmware is initially loaded in the host device before the device is placed in service. Thereafter, it frequently becomes necessary or desirable to change or upgrade the firmware in a host device. For example, a new firmware version may operate more robustly than an earlier version. A new firmware version may also provide additional features or extend the functionality of the host device.
When firmware is downloaded into the host device, either initially or as part of an upgrade, it must be stored at some location in the non-volatile memory. It is important that the location selected for the incoming firmware be available and adequate. In particular, it is essential that the incoming firmware not be written over the boot module, which is also stored in the non-volatile memory unit.